//
//
// 小美拿到了一个数组。她每次可以进行如下操作之一：
//
// 选择一个元素，使其乘以 2。
// 选择一个元素，使其除以 2，向下取整。
// 小美希望第一个元素变成所有元素的最大值。请你判断小美最少需要操作多少次？
//
// 输入描述
//
// 第一行输入一个正整数n，代表数组的大小。 第二行输入n个正整数ai，代表小美拿到的数组。
//
// 1<=n<=10^5
//
// 1<=ai<=10^9
//
// 输出描述
//
// 输出最小操作次数。
let arr = [1,2,3,4]
function meiArr(arr) {
    let maxValue = 0
    let countArr = []
    let count = 0
    let count2 = 0
    let first = arr[0]
    //? 首先你得拿到最大元素的值 判断第一个元素需要乘多少次
    //? 判断有多少元素比第一个元素大 判断这些元素需要除多少次
    for (let i = 1; i < arr.length; i++) {
        if (arr[i] > first) {
            countArr.push(arr[i])
        }
        if (arr[i] > maxValue) {
            maxValue = arr[i]
        }
    }
    //? 避免污染导致后面算不了除法了
    while (arr[0] < maxValue) {
        arr[0] *= 2
        count++
    }
    for (let i = 0; i < countArr.length; i++) {
        while (first < countArr[i]) {
            countArr[i] = Math.floor(countArr[i] / 2)
            count2++
        }
    }
    return Math.min(count2,count)
}

console.log(meiArr(arr));
